package com.example.demo.proxy;


import com.example.demo.model.dto.*;
import com.example.demo.model.req.*;

public interface AvataProxy {

    /**
     * 创建链账户
     * @param name 账户名称
     * @param operationId 操作id，需幂等
     * @return
     */
    CreateAccountDTO createAccount(String name, String operationId);

    /**
     * 批量创建链账户
     * @param count
     * @param operation_id
     * @return
     */
    CreateAccountListDTO createAccountList(Integer count ,String operation_id);

    /**
     * 查询NFT类别
     * @param nftClassListReq
     * @return
     */
    NFTClassListDTO queryNFTClassList(NFTClassListReq nftClassListReq);

    /**
     * 发行NFT
     * @param nftPublishReq
     * @return
     */
    NFTOperateDTO publishNFT(NFTPublishReq nftPublishReq);

    /**
     * 上链交易结果查询
     * @param taskId TASK ID
     * @return
     */
    DealResultDTO queryDealResult(String taskId);

    /**
     * 转让NFT
     * @param nftTransferReq
     * @return
     */
    NFTOperateDTO transferNFT(NFTTransferReq nftTransferReq);

    /**
     * 创建NFT类别
     * @param nftCreateReq
     * @return
     */
    NFTOperateDTO createNFT(NFTCreateReq nftCreateReq);

    /**
     * 查询链账户
     * @param
     * @return
     */
    AccountListDTO queryaccount(AccountReq accountReq);

    /**
     * 批量发行nft
     * @param nftPublishListReq
     * @return
     */
    NFTPublishListDTO publisNFTList(NFTPublishListReq nftPublishListReq);

    /**
     * 查询nft信息
     * @param nftReq
     * @return
     */
    NFTListDTO queryNFTList(NFTReq nftReq);

    /**
     * nft详情
     * @param class_id
     * @param nft_id
     * @return
     */
    NFTDetailDTO queryDetail(String class_id,String nft_id);

    /**
     * 查询nft操作记录
     * @param
     * @return
     */
    NFTOperateRecoderDTO queryRecords(NFTqueryrecordsReq nfTqueryrecordsReq,NFTDetailReq nftDetailReq);

    /**
     * 销毁nft
     * @param nftBurnReq 销毁body
     * @param nftDetailReq 请求路径
     * @return
     */
    NFTOperateDTO burnnft(NFTBurnReq nftBurnReq , NFTDetailReq nftDetailReq);
}
